ヘッダーをスキップ
Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド
リリース6.0
B25769-02
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

レプリケーション・スキームの例

この項で説明する例では、様々なレプリケーション・スキームの設定方法を示します。これらの例は、わかりやすくするために簡略化されています。これらの例は、より複雑なレプリケーション・スキームを作成するための出発点として使用できます。

次のスキームについて説明します。

単一サブスクライバ・スキーム

例1.4のスキームは、「クイック・スタート」で説明されている単一のマスターおよびサブスクライバの単方向レプリケーション・スキームに基づいています。ただし、この例では、2つのデータ・ストアが別々のホストSystem1およびsystem2に配置されています。また、RETURN RECEIPTサービスを使用して、マスター・データ・ストアのrepl.tab表に対してコミットしたすべてのトランザクションがサブスクライバで受信されることを確認します(「RETURN RECEIPTレプリケーション」を参照)。

図1.7 単方向レプリケーション(単一表)

例1.16
CREATE REPLICATION repl.repscheme 
  ELEMENT e TABLE repl.tab 
      MASTER masterds ON "system1" 
      SUBSCRIBER subscriberds ON "system2" 
         RETURN RECEIPT; 
 

例1.17に示すスキームでは、内容全体(tab1からtab7まで)をレプリケートするMASTERDSというマスター・データ・ストアを(server2にある)SUBSCRIBERDSというサブスクライバ・データ・ストアに接続します。

図1.8 単方向レプリケーション(データ・ストア全体)

例1.17
CREATE REPLICATION repl.repscheme 
   ELEMENT e DATASTORE 
      MASTER masterds ON "server1" 
      SUBSCRIBER subscriberds ON "server2"; 

複数サブスクライバ・スキーム

最大63のサブスクライバ・データ・ストアを含むレプリケーション・スキームを作成できます。

図1.9に、2つのサブスクライバ・データ・ストアにレプリケートされる表(repl.tab)を持つマスター・データ・ストアを示します。

例1.18

この例では、server2にあるsubscriber1dsおよびserver3にあるsubscriber2dsという2つのサブスクライバ・データ・ストアにrepl.tab表をレプリケートするマスター・データ・ストアmasterdsを設定します。レプリケーション・スキームの名前はrepl.twosubscribersです。レプリケーション要素の名前はeです。

CREATE REPLICATION repl.twosubscribers 
ELEMENT e TABLE repl.tab 
  MASTER masterds ON "server1" 
  SUBSCRIBER subscriber1ds ON "server2", 
             subscriber2ds ON "server3"; 
例1.19

この例では、例1.18の基本的な例を使用し、それにRETURN RECEIPT属性およびSTOREパラメータを追加します。RETURN RECEIPTによって、両方のデータ・ストアに対してRETURN RECEIPTサービスが有効になります。STOREパラメータによって、FAILTHRESHOLD値が10に設定され、サブスクライバで障害が発生したと想定される前にサブスクライバに対するmasterdsに累積可能な最大ログ・ファイル数が指定されます(このFAILTHRESHOLD値は、データ・ストアがディスクベース・ロギング用に設定されていることを想定しています)。

CREATE REPLICATION repl.twosubscribers 
ELEMENT e TABLE repl.tab 
  MASTER masterds ON "server1" 
  SUBSCRIBER subscriber1ds ON "server2", 
             subscriber2ds ON "server3" 
  RETURN RECEIPT 
STORE masterds FAILTHRESHOLD 10; 
例1.20

この例では、subscriber2dsに対してのみRETURN RECEIPTを有効にする方法を示します(subsciber1ds定義の末尾のカンマは不要です)。

CREATE REPLICATION repl.twosubscribers 
ELEMENT e TABLE repl.tab 
  MASTER masterds ON "server1" 
  SUBSCRIBER subscriber1ds ON "server2" 
  SUBSCRIBER subscriber2ds ON "server3" RETURN RECEIPT 
STORE masterds FAILTHRESHOLD 10; 
例1.21

この例では、RETURN RECEIPT BY REQUESTをsubscriber1dsに、RETURN RECEIPTをsubscriber2dsに適用する方法を示します。このスキームでは、subscriber1dsにアクセスするアプリケーションでttRepSyncSetプロシージャを使用してトランザクションのRETURNサービスを有効にする必要があります。一方、subscriber2dsでは、すべてのトランザクションにRETURNサービスが無条件に提供されます。

CREATE REPLICATION repl.twosubscribers 
ELEMENT e TABLE repl.tab 
  MASTER masterds ON "server1" 
  SUBSCRIBER subscriberds1 ON "server2" RETURN RECEIPT BY REQUEST 
  SUBSCRIBER subscriber2ds ON "server3" RETURN RECEIPT 
STORE masterds FAILTHRESHOLD 10; 

選択レプリケーション・スキーム

例1.22の選択レプリケーション・スキームでは、4つの表にレプリケートするマスター・データ・ストアcentraldsを設定します。tab1およびtab2はサブスクライバbackup1dsにレプリケートされ、tab3およびtab4はbackup2dsにレプリケートされます。マスター・データ・ストアはfinanceサーバーにあります。両方のサブスクライバがサーバーbackupsystemに配置されています。

図1.10 選択レプリケーション

例1.22
CREATE REPLICATION repl.twobackups 
ELEMENT a TABLE tab1 
  MASTER centralds ON "finance" 
  SUBSCRIBER backup1ds ON "backupsystem" 
ELEMENT b TABLE tab2 
  MASTER centralds ON "finance" 
  SUBSCRIBER backup1ds ON "backupsystem" 
ELEMENT d TABLE tab3 
  MASTER centralds ON "finance" 
  SUBSCRIBER backup2ds ON "backupsystem" 
ELEMENT d TABLE tab4 
  MASTER centralds ON "finance" 
  SUBSCRIBER backup2ds ON "backupsystem"; 

伝播スキーム

例1.23に、マスター・データ・ストアからプロパゲータへの単方向レプリケーション・スキームを示します。プロパゲータは、2つのサブスクライバに変更を転送します。ELEMENT aでは、repl.tab表がfinanceマシンのcentraldsデータ・ストアで更新され、nethandlerマシンのpropdsプロパゲータ・データ・ストアにレプリケートされます。ELEMENT bでは、propdsで受信したrepl.tab表への変更が、マシンbackupsystem1およびbackupsystem2の2つのサブスクライバbackup1dsおよびbackup2dsにそれぞれレプリケートされます。

例1.24の設定もほぼ同じですが、この場合、レプリケーション・スキームを1つではなく2つ使用しています。

repl.tab表のレプリケーションは、同じスキームでは別々の要素名(aおよびb)で記述する必要がありますが、個別のスキームを使用すると、同じ要素名(a)で記述できます。

図1.11 伝播

例1.23
CREATE REPLICATION repl.propagator 
ELEMENT a TABLE repl.tab 
  MASTER centralds ON "finance" 
  SUBSCRIBER propds ON "nethandler" 
ELEMENT b TABLE repl.tab 
  PROPAGATOR propds ON "nethandler" 
  SUBSCRIBER backup1ds ON "backupsystem1", 
             backup2ds ON "backupsystem2"; 
例1.24
CREATE REPLICATION repl.propagator 
ELEMENT a TABLE repl.tab 
  MASTER centralds ON "finance" 
  SUBSCRIBER propds ON "nethandler"; 
CREATE REPLICATION repl.propagator2 
ELEMENT a TABLE repl.tab 
  PROPAGATOR propds ON "nethandler" 
  SUBSCRIBER backup1ds ON "backupsystem1", 
             backup2ds ON "backupsystem2"; 

双方向の分割ワークロード・スキーム

例1.25に、2つのデータ・ストア(westcoastホストのwestdsおよびeastcoastホストのeastds)に対する分割ワークロードの双方向レプリケーション・スキームを示します。顧客は2つの表で表されます。西地区の顧客のデータはwaccounts、東地区の顧客のデータはeaccountsに収められます。westdsデータ・ストアは、waccounts表を更新してeastdsデータ・ストアにレプリケートします。eaccounts表は、eastdsデータ・ストアによって所有され、westdsデータ・ストアにレプリケートされます。RETURN RECEIPT属性は、RETURN RECEIPTサービスを有効にして、いずれのマスター表のトランザクションもそれらのサブスクライバによって受信されることを保証します。

例1.26は、同じ設定ですが、r1およびr2という個別のレプリケーション・スキームを使用しています。

図1.12 分割ワークロード・レプリケーション

例1.25
CREATE REPLICATION repl.r1 
ELEMENT elem_waccounts TABLE repl.waccounts 
   MASTER westds ON "westcoast" 
   SUBSCRIBER eastds ON "eastcoast" RETURN RECEIPT 
ELEMENT elem_eaccounts TABLE repl.eaccounts 
   MASTER eastds ON "eastcoast" 
   SUBSCRIBER westds ON "westcoast" RETURN RECEIPT; 
例1.26   
CREATE REPLICATION repl.r1 
ELEMENT elem_waccounts TABLE repl.waccounts 
   MASTER westds ON "westcoast" 
   SUBSCRIBER eastds ON "eastcoast" RETURN RECEIPT; 
CREATE REPLICATION repl.r2 
ELEMENT elem_eaccounts TABLE repl.eaccounts 
   MASTER eastds ON "eastcoast" 
   SUBSCRIBER westds ON "westcoast" RETURN RECEIPT; 

双方向の一般ワークロード・スキーム

例1.27に、eastdsまたはwestdsのいずれかのデータ・ストアでaccounts表を更新できる一般ワークロードの双方向レプリケーション・スキームを示します。各データ・ストアは、accounts表に対してマスターおよびサブスクライバの両方になります。

要素をこの手法でレプリケートする場合、アプリケーションでは、各データ・ストアへの書込みを調整して、同じデータに同時に更新が行われないようにする必要があります。更新競合を管理するために、BINARY(8)型のタイムスタンプ列(例1.28のtstamp列など)を表に含め、例8.2のレプリケーション・スキームを使用してタイムスタンプ比較を有効にできます。

更新競合の管理方法の詳細は、「レプリケーション競合の検出および解消」を参照してください。

図1.13 分散ワークロード・レプリケーション

例1.27
CREATE REPLICATION repl.r1 
ELEMENT elem_accounts_1 TABLE repl.accounts 
   MASTER westds ON "westcoast" 
   SUBSCRIBER eastds ON "eastcoast" 
ELEMENT elem_accounts_2 TABLE repl.accounts 
   MASTER eastds ON "eastcoast" 
   SUBSCRIBER westds ON "westcoast"; 
例1.28
CREATE TABLE repl.accounts (custname VARCHAR(30) NOT NULL,  
                             address VARCHAR(80), 
                             curbalance DEC(15,2), 
                             tstamp BINARY(8), 
                             PRIMARY KEY (custname)); 

キャッシュ・グループ・レプリケーション・スキーム

図1.14に、Oracleを実行しているデータベース・サーバーおよびTimesTenを実行している2つのアプリケーション・サーバー(server1およびserver2)を示します。例1.30TargetCustomersキャッシュ・グループは、server1で稼働しているmasterdsデータ・ストアから、server2で稼動しているsubscriberdsデータ・ストアの例1.31TargetCustomersキャッシュ・グループに単方向でレプリケートされます。

注意: この例では、レプリケーション・スキームの定義がキャッシュ・グループの定義の前に示されていますが、レプリケーション・スキームを適用する前に、これらのキャッシュ・グループをそれぞれのデータ・ストアに作成する必要があります。

図1.14 キャッシュ・グループのレプリケート

例1.29

この例では、読取り専用キャッシュ・グループTargetCustomersを別の読取り専用キャッシュ・グループにレプリケートするスキームを示します。

CREATE REPLICATION repl.reptargetcustomers 
ELEMENT root TABLE repl.customer 
   MASTER masterds ON "server1" 
   SUBSCRIBER subscriberds ON "server2" 
ELEMENT childorders TABLE repl.orders 
   MASTER masterds ON "server1" 
   SUBSCRIBER subscriberds ON "server2" 
ELEMENT childorderdetails TABLE repl.orderdetails 
   MASTER masterds ON "server1" 
   SUBSCRIBER SUBSCRIBERDS ON "SERVER2" 
ELEMENT childinterests TABLE repl.interests 
   MASTER masterds ON "server1" 
   SUBSCRIBER subscriberds ON "server2"; 
例1.30

この例では、AUTOREFRESH STATE ONを指定したキャッシュ・グループのレプリケーションを示します。

CREATE READONLY CACHE GROUP TargetCustomers 
AUTOREFRESH INTERVAL 240 MINUTES 
FROM 
customer(custid INT NOT NULL, 
       name CHAR(100) NOT NULL, 
       addr CHAR(100), 
       zip INT, 
       region CHAR(10), 
       PRIMARY KEY (custid)), 
orders(orderid INT NOT NULL, 
       custid INT NOT NULL, 
       PRIMARY KEY (orderid), 
       FOREIGN KEY (custid) REFERENCES customer(custid)), 
orderdetails(orderid INT NOT NULL,  
       itemid INT NOT NULL, 
       quantity INT NOT NULL, 
       PRIMARY KEY (orderid, itemid), 
       FOREIGN KEY (orderid) REFERENCES orders(orderid)), 
INTERESTS(custid INT NOT NULL, 
       interest SMALLINT NOT NULL, 
       PRIMARY KEY (custid, interest), 
       FOREIGN KEY (custid) REFERENCES customer(custid)); 
例1.31

この例では、AUTOREFRESH STATE OFFを指定したキャッシュ・グループのレプリケーションを示します。

CREATE READONLY CACHE GROUP TargetCustomers 
AUTOREFRESH STATE OFF 
FROM 
customer(custid INT NOT NULL, 
       name CHAR(100) NOT NULL, 
       addr CHAR(100), 
       zip INT, 
       region CHAR(10), 
       PRIMARY KEY (custid)), 
orders(orderid INT NOT NULL, 
       custid INT NOT NULL, 
       PRIMARY KEY (orderid), 
       FOREIGN KEY (custid) REFERENCES customer(custid)), 
orderdetails(orderid INT NOT NULL,  
       itemid INT NOT NULL, 
       quantity INT NOT NULL, 
       PRIMARY KEY (orderid, itemid), 
       FOREIGN KEY (orderid) REFERENCES orders(orderid)), 
interests(custid INT NOT NULL, 
       interest SMALLINT NOT NULL, 
       PRIMARY KEY (custid, interest), 
       FOREIGN KEY (custid) REFERENCES customer(custid)); 

アクティブ・スタンバイ・ペア

図1.15に、アクティブ・スタンバイ・ペアを示します。

図1.15 アクティブ・スタンバイ構成

アクティブ・スタンバイ・ペアでは、2つのデータ・ストアがマスターとして定義されます。1つは、アクティブ・マスター・データ・ストアで、もう1つはスタンバイ・マスター・データ・ストアです。アクティブ・マスター・データ・ストアは直接更新されます。スタンバイ・マスター・データ・ストアは、アクティブ・マスター・データ・ストアから更新を受信し、変更を最大で62の読取り専用サブスクライバ・データ・ストアに伝播します。

例1.32では、rep1とrep2がマスター・データ・ストアとして指定され、rep3とrep4がサブスクライバ・データ・ストアとして指定されています。レプリケーション・モードは、RETURN RECEIPTです。

注意: アクティブ・スタンバイ・ペアを作成するには、CREATE ACTIVE STANDBY PAIR文を使用します。アクティブ・スタンバイ・ペアの設定方法の詳細は、「アクティブ・スタンバイ・ペアの設定」を参照してください。
例1.32
CREATE ACTIVE STANDBY PAIR rep1, rep2 RETURN RECEIPT 
  SUBSCRIBER rep3, rep4 
  STORE rep1 PORT 21000 TIMEOUT 30  
  STORE rep2 PORT 20000 TIMEOUT 30;